{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf320
{\fonttbl\f0\fswiss\fcharset0 Helvetica;\f1\fnil\fcharset0 LucidaGrande;\f2\fmodern\fcharset0 Courier;
\f3\froman\fcharset0 Times-Roman;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\margl1440\margr1440\vieww17500\viewh10600\viewkind0
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 \
Nuttig:\
\
\pard\pardeftab720

\f1\fs26 \cf0 -(input en output unit) \
read(*,...) is inderdaad identiek aan read(unit=INPUT_UNIT,...). Analoog voor write(*,...) en write(unit=OUTPUT_UNIT,...), maar opgelet, write(unit=ERROR_UNIT,...) is anders.\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 \
-(geheugengebruik) \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f1\fs26 \cf0 Zelf tellen is de bedoeling.\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 \
-(.o en .mod) \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f1\fs26 \cf0 Deze mogen bij de bronbestanden zelf staan, dat is geen probleem. Het opruimen ervan kan je doen via een "clean" target in jouw Makefile, net zoals in diegene die we gebruikten in de oefenzittingen.\
\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f0\fs24 \cf0 -(enkel re\'eble diagonaliseerbare matrices?) \
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural

\f1\fs26 \cf0 In de opgave staat ergens: "opgelet: voor sommige algoritmen zijn de tussenresultaten complex". Er staat ook: "je mag veronderstellen dat de invoermatrices steeds re\'ebel zijn".\
\pard\pardeftab720
\cf0 Het is een goed idee om eerst enkel maar te testen met symmetrische matrices en nadien je aanpassingen te doen voor complexe tussenresultaten.\
\
-(LAPACK Libraries voor verschillende testprogramma's)\
Net zoals bij modules is het aangeraden om dezelfde compiler te gebruiken voor zowel de bibliotheek als het hoofdprogramma.\
\
Het doel van de variabelen BLASLIB en LAPACKLIB is inderdaad om gemakkelijk de juiste bibliotheek te kunnen opgeven, afhankelijk van de compiler. Voor eigen testen kan je eventueel gebruik maken van de methode zoals ook gebruikt voor het automatisch kiezen van de juiste vlaggen in \'e9\'e9n van de Makefiles van de Fortran zittingen.\
\
BLASLIB_gfortran=...\
BLASLIB_g95=...\
BLASLIB_nagfor=...\
BLASLIB_ifort=...\
BLASLIB=$(BLASLIB_$(FC))\
\
Voor de duidelijkheid: de opgegeven waarden voor BLASLIB en LAPACKLIB in de opgave zijn niet compleet en zal je nog moeten aanpassen ...\
\
-(GFORTRAN) gfortran -g -Wall -Wimplicit-interface -Wunderflow -fbounds-check -fimplicit-none -Wtabs ...\
\
-
\f2\fs22 PROGRAM test_getarg\
            INTEGER :: i\
            CHARACTER(len=32) :: arg\
          \
            DO i = 1, iargc()\
              CALL getarg(i, arg)\
              WRITE (*,*) arg\
            END DO\
          END PROGRAM\
\
\pard\pardeftab720\sa240

\f3\fs26 \cf0 -D.w.z. de invoermatrix wordt ingelezen via \'91INPUT UNIT\'92 en de uitvoer wordt weggeschreven naar \'91OUTPUT UNIT\'92. Indien je extra informatie naar het scherm wil schrijven dan doe je dit op \'91ERROR UNIT\'92.
\fs24 \

\fs26 De optionele argument --algorithm accepteert naargelang de gekozen implementatielijn: taylor, eig, eigqr, of taylor, kwadtaylor, kwadpade. Voorzie het volgens jouw beste algoritme als standaard- keuze in afwezigheid van het argument. Voor de methoden die je niet ondersteunt geef je geen uitvoer op \'91OUTPUT UNIT\'92 terug, maar gewoon een foutmelding op \'91ERROR UNIT\'92.
\fs24 \
\pard\pardeftab720

\f1\fs26 \cf0 \
-Eigenaardigheden:\
	-Inlezen data gaat gepaard met afrondingsfouten\
\pard\pardeftab720

\f0\fs24 \cf0 - STRUCTUUR:\
	Hoofdprogramma gebruikt module METHODS\
	bevat:	-stuk code om argumenten te checken\
		-interpreteer --algorithm\
		-roep juiste methode aan uit METHODS\
		-schrijf uitvoer\
		-...\
	Testprogramma gebruikt ook module METHODS\
	bevat:	-stuk code om argumenten te checken (bv enkel symmetrische, enkel dit algoritme,\'85)\
		-roep juiste methode aan met hoofdprogramma\
		-vergelijk met juiste output\
	Module Methods bevat\
	\
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\pardirnatural
\cf0 problemen: 	-maxval\
		  	-dcmplx? -> niet voor interpretatie maar wel voor numerieke precisie\
\
TODO:\
\
- uitzoeken input output   DONE\
- Fake programma matrixexp schrijven\
- test programma schrijven\
- hoofdprogramma contains matrixprint\
- test contains matrixread\
- test contains compare\
- makefile aanpassen: default = matrixexp, make test is what we need, de anderen moeten automatisch volgen!\
- testprogramma taylorsimple in fortran\
- methode printmatrix verwijderen uit methods\
- woordje zeggen over geheugengebruik van LAPACK methodes (oa geheugen afwegen tegen performantie)\
- Ik heb eens naar optimale lengte work array gekeken (280 voor 4x4 random matrix)\
-Methode ZGEEV geeft slechte resultaten, halfuurtje kijken naar DGEEV\
-Een van de laatste problemen was: A wordt aangepast in DGEEV\
- Tijdsbesteding + knelpunten!}